Se tem um periférico que é uma mão na roda para o Arduino é o display 1602. Ele permite escrever mensagens de texto na tela de LCD informando o usuário sobre o que desejarmos.
Muitas vezes nos nossos projetos utilizamos leds e buzzers e é o suficiente para dar o recado. Mas o arduino , às vezes, faz uma tarefa que a comunicação com o usuário é fundamental ou que é muito complexa e fica impossível saber em que etapa ele está do processo sem uma mensagem.
Citando um exemplo, meu módulo de carga de bateria do meu carro. Meu carro fica muito tempo na garagem e eu uso pouco...resultado a bateria estava quase sempre descarregada e quando eu ia usar o carro, abraço, não dava. Resolvi então fazer um 'flutuador' para a bateria, ou seja, ele não 'carrega' uma bateria descarregada mas sim 'mantém' uma bateria carregada. E fiz esse carregador com arduino e ele é muito inteligente...informa a tensão da bateria, se esta carregando ou não...a quanto tempo (em segundos). Sendo assim sempre que vou pegar o carro antes de desligar ele vejo o display que me informa que a bateria esta ok e eu saio numa boa. Nunca mais tive problemas.
O Módulo LCD 1602 se chama 1602 porque possui 16 caracteres por linha e possui 2 linhas.
Portanto, você pode escrever uma mensagem de até 32 caracteres nele. Contudo, se você continuar
escrevendo mais do que cabe ele pode deslocar como se fosse um carrosel de caracteres jogando os
mais antigos fora.
Em matéria de consumo de energia o módulo 1602 é um problema. Existe 2 tipos de LCD 1602, um com luz de fundo e outro sem luz de fundo.
Sem luz de fundo o LCD1602 consome 6 mA. Super economico mas ninguém enxerga nada num LCD com o fundo desligado a não ser que tenha uma fonte de luz incindindo nele.
Já o LCD com luz de fundo consome 26 mA e a iluminação é boa dando para ler seu conteúdo praticamente em qualquer condição desfavorável de luz.
Quanto aos modelos de LCD 1602 temos dezenas...tem com diversas cores do display : Verde, Azul...que exibe os caracteres em preto. Dependendo de nossa montagem podemos escolher um bem estiloso para colocar num painel de um carro, por exemplo, na cor azul escuro com letras em branco (excelente contraste e visibilidade).
O LCD 1602 se comunica com o mundo externo de 3 maneiras :
• 1-Comunicação paralela com 8 bits.
• 2-Comunicação paralela com 4 bits.
• 3-Comunicação serial I2C.
• 1-Comunicação paralela com 8 bits. Nunca usei e nunca ví ninguém usar. Ninguém vai gastar 8 pinos dos 14 que o Arduino tem para conversar com o LCD se ele pode fazer exatamente isso com 4 bits.
• 2-Comunicação paralela com 4 bits. Este é o modo mais simples e pratico de usar o LCD1602. Digo isto
porque o I2C você tem que comprar um placa extra que, se bobear, sai mais caro que o LCD e você economiza
3 pinos com isso, nem sempre é vantajoso.
Sendo assim, gastamos 4 bits para comunicação com o LCD1602 mais 2 para controle. Veja imagem abaixo :
No pino 3 do LCD temos o pino VO. Ele define o contraste...se ficar com muito contraste até o fundo do caractere fica branco e se ficar com pouco contraste você não enxerga nada. Muitos LCDs a gente liga direto no terra e fica bom, em outros fica com muito contraste. Com esse trimpot você ajusta como mais gostar.
Os pinos 15 (A) e 16 (K) do LCD são o Anodo(+) e Katodo(-) da luz de fundo do lcd. Ás vezes eu coloco uma chave para ligar ou não a luz de fundo mas normalmente fica ligada direto.
/*
Projeto 5 : Como exibir uma mensagem no display de LCD
Conexão do Arduino e o modo de LCD
LCD Arduino
RS D7
Enable D6
D4 D5
D5 D4
D6 D3
D7 D2
R/W GND-Terra
VSS GND-Terra
VCC Fonte +5V - Pode ser a do arduino
Nota : No pino 3 do LCD(VO) temos um trimpot de 10K
Uma extremidade ligada a terra
Outra extremidade ligada a 5V(VCC)
O pino central ligado ao Pino 3 do LCD - VO
*/
#include <LiquidCrystal.h> //biblioteca do display de LCD
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // RS, E, D4,D5,D6,D7
void setup() {
lcd.begin(16, 2); //setando o modo que o LCD opera -16 linhas, 2 colunas
lcd.print("Tenha um bom dia...!"); //exibe esta mensagem na linha 0 coluna 0
}
void loop() {
lcd.setCursor(0, 1); //Colocando o cursor na coluna 0 linha 1
lcd.print(millis() / 1000); // exibindo quantos segundos o arduino esta ligado
}
A primeira linha de programa contém a biblioteca para acesso ao LCD.
#include
Caso você nunca tenha instalado uma biblioteca eu recomendo o seguinte :
• 1 - Vá no menu 'Ferramentas' e selecione o item 'Gerenciar bibliotecas'.
Serão exibidas todas as bibliotecas que estão disponíveis para download e as que já estiver instaladas
na sua máquina terá uma mensagem 'installed' indicando que já esta instalada.
• 2 - No topo direito da tela tem uma caixa em branco...digite lcd nela e em seguida enter.
• 3 - Será exibido um monte de bibliotecas de LCD. Existe um monte de LCD de todos os tipos e tamanhos
inclusive com tela grande, por toque.
Escolha LiquidCrystal que foi a que usamos passando o mouse sobre a janela que ele foi exibido e clicando
em 'install' (instalar).
Importante : Essas bibliotecas estão sempre sendo atualizadas e melhoradas. Recomendo atualizar sempre que for possível mas se você tem um projeto em produção aconselho a salvar a versão antiga antes de fazer esta operação. Assim se der erro no seu projeto tem como você voltar a versão antiga.
Na função setup tem a linha : lcd.begin(16, 2); //setando o modo que o LCD opera -16 linhas, 2 colunas.
Que indica qual é o padrão do nosso LCD - 1602 - 16 Colunas por 2 linhas.
Esta linha envia a ordem para a biblioteca que envia para o LCD.
No final desta instrução temos o LCD limpo, o cursor no primeiro caractere da primeira linha pronto
para trabalhar.
Como eu quiz exibir uma mensagem estática (fixa) eu coloquei na função setup mesmo :
lcd.print("Tenha um bom dia...!"); //exibe esta mensagem na linha 0 coluna 0.
Então na primeira linha do LCD é exibida a mensagem : Tenha um bom dia...!.
Importante : Acostume a contar caracteres. No LCD a coisa fica muito zuada se mensagens
não couberem na tela do LCD ou se mensagens forem escritas uma sobre as outras.
A linha : lcd.setCursor(0, 1); //Colocando o cursor na coluna 0 linha 1.
Como diz no comentário coloca o cursor do LCD no primeiro caractere da segunda linha.
Nessa posição será escrito o tempo transcorrido em segundos desde que ligamos o arduino.
Nota : A contagem vai de zero a infinito mas não tem separação de minutos, horas, dias, etc.